home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / blackfin / include / asm / byteorder.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.1 KB  |  49 lines

  1. #ifndef _BLACKFIN_BYTEORDER_H
  2. #define _BLACKFIN_BYTEORDER_H
  3.  
  4. #include <asm/types.h>
  5. #include <linux/compiler.h>
  6.  
  7. #ifdef __GNUC__
  8.  
  9. static __inline__ __attribute_const__ __u32 ___arch__swahb32(__u32 xx)
  10. {
  11.     __u32 tmp;
  12.     __asm__("%1 = %0 >> 8 (V);\n\t"
  13.         "%0 = %0 << 8 (V);\n\t"
  14.         "%0 = %0 | %1;\n\t"
  15.         : "+d"(xx), "=&d"(tmp));
  16.     return xx;
  17. }
  18.  
  19. static __inline__ __attribute_const__ __u32 ___arch__swahw32(__u32 xx)
  20. {
  21.     __u32 rv;
  22.     __asm__("%0 = PACK(%1.L, %1.H);\n\t": "=d"(rv): "d"(xx));
  23.     return rv;
  24. }
  25.  
  26. #define __arch__swahb32(x) ___arch__swahb32(x)
  27. #define __arch__swahw32(x) ___arch__swahw32(x)
  28. #define __arch__swab32(x) ___arch__swahb32(___arch__swahw32(x))
  29.  
  30. static __inline__ __attribute_const__ __u16 ___arch__swab16(__u16 xx)
  31. {
  32.     __u32 xw = xx;
  33.     __asm__("%0 <<= 8;\n    %0.L = %0.L + %0.H (NS);\n": "+d"(xw));
  34.     return (__u16)xw;
  35. }
  36.  
  37. #define __arch__swab16(x) ___arch__swab16(x)
  38.  
  39. #endif
  40.  
  41. #if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
  42. #  define __BYTEORDER_HAS_U64__
  43. #  define __SWAB_64_THRU_32__
  44. #endif
  45.  
  46. #include <linux/byteorder/little_endian.h>
  47.  
  48. #endif                /* _BLACKFIN_BYTEORDER_H */
  49.